package com.ply.service;

import com.ply.entity.pojo.Project;
import com.ply.entity.vo.ProjectAndOption;
import com.ply.entity.vo.ProjectAndOptionSum;
import com.ply.entity.vo.Result;

import java.util.List;
import java.util.Map;

public interface ProjectService {
    /**
     * 根据用户id，投票名字，每日投票次数,选项，开始时间，结束时间，单选多选创建投票
     * 返回创建是否成功
     *
     * @param projectAndOption
     * @return
     */
    public Result createVote(ProjectAndOption projectAndOption);

//    /**
//     * 查找所有的项目信息
//     * 返回一个list集合，里面包含所有项目信息
//     *
//     * @param
//     * @return
//     */
//    public List<ProjectAndOption> selectAllProject();


//    /**
//     * 根据用户id查看投票项目数量
//     * @param userId
//     * @return
//     */
//    public int selectVoteSum(int userId);

    /**
     * 根据选项id查询单个选项投票数量，返回改选项的投票数量
     *
     * @param voteOptionId
     * @return
     */
   // public int selectVoteOptionSum(int voteOptionId);

    /**
     * 根据项目id查询选项投票数
     * 返回一个Map集合，包括所有选项的投票数
     *
     * @param projectId
     * @return
     */
    //public Map<Integer, Integer> selectVoteOptionSumById(int projectId);

    /**
     * 根据ip给选项进行投票，返回是否成功
     *
     * @param optionId
     * @param ip
     * @return
     */
    public Result toVote(int optionId, String ip);

    /**
     * 给项目延迟结束时间
     * @param projectId
     * @param time
     * @return
     */
    public Result byProjectEndTime(int userId,int projectId,int time);

    /**
     * 根据项目id查询项目信息
     * @param projectId
     * @return
     */
    public ProjectAndOption selectProjectByProjectId(int projectId);

    /**
     * 增加项目的审核人id
     * @param auditId
     * @return
     */
    public Result addProjectAuditId(int projectId,int auditId);

    /**
     * 修改项目的状态
     * @param projectId
     * @param status
     * @return
     */
    public Result updateProjectStatus(int projectId,int status);

    /**
     * 根据项目id查询单个项目的项目名字，选项名字，投票数。
     * @param projectId
     * @return
     */
    public Result selectProjectNameAndOptionNameAndSum(int projectId);

}
